import way from '../common/way';
import global from "@/common/global";
/**
 * 请求封装
 * @param config {Object}
 * @returns {Promise<unknown>}
 */
export  function request(config = {}){
  const env = process.env.config[process.env.NODE_ENV];
  const token = uni.getStorageSync('token')||'';
  return new Promise((resolve,reject)=>{
    uni.request({
      url: env.baseURL + config.url||'',
      data: config.data||'',
      method: config.method||'GET',
      timeout: 60000,
      header: {
        'token': token,
      },
      success: (res) => {
        if(res.header['token']){
          uni.setStorageSync('token',res.header['token']);
        }
        // 服务器错误
        if(res.statusCode === 500){
          way.toast('服务器错误');
          reject(res);
          return;
        }
        // 成功
        if(res.data.code === 200){
          resolve(res.data);
          return;
        }
        // 不在线
        if(res.data.code === 201){
          resolve(res.data);
          return;
        }
        // 重新登录
        if(res.data.code === -200){
          uni.navigateTo({
            url: '/pages/login/login'
          })
          clearLogin();
          reject(res);
          return;
        }
        // 失败
        if(res.data.code === -100){
          reject(res.data);
          way.toast(res.data.msg);
          return;
        }
        if(res.statusCode !== 200){
          reject(res);
          way.toast('系统错误，请稍后重试');
          return;
        }
        reject(res.data);
        way.toast(res.data.msg||'系统错误');
      },fail: (err =>{
        reject(err);
        way.toast('请求超时，请稍后重试');
      })
    });
  })
}

export function upload(config = {}){
  const env = process.env.config[process.env.NODE_ENV];
  const token = uni.getStorageSync('token')||'';
  return new Promise((resolve,reject)=>{
    uni.uploadFile({
      url: env.baseURL + config.url||'',
      filePath: config.file,
      name: 'file',
      formData: {
        'url': config.formData.url||'',
      },
      header: {
        'token': token,
      },
      success: (res => {
        const data = JSON.parse(res.data);
        // 服务器错误
        if (res.statusCode === 500) {
          way.toast('服务器错误');
          reject(res);
          return;
        }
        // 成功
        if (data.code === 200) {
          resolve(data);
          return;
        }
        // 重新登录
        if (data.code === -200) {
          uni.navigateTo({
            url: '/pages/login/login'
          })
          clearLogin();
          reject(data);
          return;
        }
        // 失败
        if (data.code === -100) {
          reject(res.data);
          way.toast(res.data.msg);
          return;
        }
        if (res.statusCode !== 200) {
          reject(res);
          way.toast('系统错误，请稍后重试');
          return;
        }
        reject(data);
        way.toast(data.msg || '系统错误');
      }),fail: (err =>{
        reject(err);
        way.toast('请求超时，请稍后重试');
      })
    });
  })
}
/**
 * 清空登录信息
 */
function clearLogin(){
  uni.removeStorageSync('user_id');
  uni.removeStorageSync('phone');
  uni.removeStorageSync('token');

  global.user_id = '';
  global.phone = '';
}
